package jvm.stack;

/**
 * @Author: ideaAdmin
 * TODO: 查看字节码的虚方法和非虚方法调用
 * Date: 2022/2/19:11:21
 * Description:
 */

public class InvokeCall {


}

class Father{
    public void m1(){

    }

    public void m2(){

    }

    public static  void m3(){

    }

    public final   void m4(){

    }

}

class Son extends Father implements InterfaceMethod {

    @Override
    public void m1() {
        super.m1();
    }

    public static  void m3(){

    }

    @Override
    public void test() {

    }

    private void m5(){

    }

    public void privateMethod(){
        m3();//非虚引用 invokeStatic
        super.m1();//invokeSpace
        m5();

        m4();//invokeVirtual 虽然是父类方法 但是是final的 不能被重写 还是算非虚方法引用

        m1();//不清楚自己是否重写 所有还是invokeVirtual 虚引用

        m2();//invokeVirtual 虚引用
          InterfaceMethod interfaceMethod = null;
        interfaceMethod.test();//invokeInterface

    }


}

interface InterfaceMethod {

    void test();
}


